/**
 * 无限条直线
 *  x = n
 *  y = n
 *  x + y = n 
 * 包含(0.5, 0.5)的区域染成黑色，
 * 然后交替染色，即黑色周围全白，白色周围全黑
 * 给定A/B/C/D，问矩形(A,B)(C,D)之间的黑色区域面积的两倍是多少？
 * 两倍一定是一个整数。
 * 矩形区域有一个简单的算法，令f(x, y)是左下角在原点右上角在(x,y)答案
 * 则 f(A, B, C, D) = f(A, B) + f(C, D) - f(A, D) - f(C, B)
 * 因此只需要两个参数即可。
 * 稍微观察就能发现周期是(4, 2)，因此将(x, y)矩形分为4个部分
 * 第一个部分是完整周期的（4， 2）
 * 第二个部分是长度为完整周期高度为2以内的
 * 第三个部分是长度为4以内的、高度为完整周期的
 * 第四个部分是长、高都在以内的
 * 相加即可。
 * 因为坐标有可能是负数，将整个矩形平移到第一象限再求即可
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;
using pii = pair<int, int>;

llt A, B, C, D;

/// T[x][y]表示以(x,y)为右上的结果
llt T[][3] = {
    {0},
    {0, 2, 3},
    {0, 3, 6},
    {0, 3, 7},
    {0, 4, 8}
};

llt f(llt x, llt y){
    auto r = x / 4;
    auto c = y / 2;
    auto ans = r * c * T[4][2];
    
    auto rleft = x % 4;
    auto cleft = y % 2;

    ans += T[4][cleft] * r;
    ans += T[rleft][2] * c;

    ans += T[rleft][cleft];
    return ans;
}

void work(){
    cin >> A >> B >> C >> D;
    if(A < 0){
        auto ta = -A / 4 + 1;
        A += ta * 4;
        C += ta * 4;
    }
    if(B < 0){
        auto tb = -B / 4 + 1;
        B += tb * 4;
        D += tb * 4;
    }
    auto ans = f(A, B);  
    auto tmp = f(C, D);
    tmp -= f(A, D);
    ans += tmp;
    ans -= f(C, B);
    cout << ans << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--) work();
    return 0;
}
